home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / mail / xsig11.lha / XSigGetGroup.mod < prev    next >
Text File  |  1994-06-26  |  3KB  |  104 lines

  1. (* :Version. $VER: XSigGetGroup_Source 0.7 (15.05.94)" *)
  2.  
  3. MODULE XSigGetGroup;
  4.  
  5.  
  6.  
  7. (*$ DEFINE BETA:=FALSE *)
  8.  
  9.  
  10.  
  11. IMPORT Arguments;
  12. IMPORT Arts;
  13. IMPORT DosD,DosL;
  14. IMPORT Heap;
  15. IMPORT SYSTEM;
  16.  
  17.  
  18.  
  19. CONST
  20.   vers="$VER: XSigGetGroup" (*$ IF BETA *) +"_BETA" (*$ ENDIF *) +" 1.0 (15.05.94)\o";
  21.  
  22.  
  23.  
  24. VAR
  25.   len: INTEGER;
  26.   arg: ARRAY[0..255] OF CHAR;
  27.   newsfile: DosD.FileHandlePtr;
  28.   buffer: POINTER TO ARRAY[0..99999999] OF CHAR;
  29.   act,i,j,size: LONGINT;
  30.  
  31.  
  32.  
  33. BEGIN
  34.   newsfile:=NIL;
  35.   buffer:=SYSTEM.ADR(vers);
  36.  
  37.   IF Arguments.NumArgs()#1 THEN
  38.     Arts.Exit(10);
  39.   END;
  40.  
  41.   Arguments.GetArg(1,arg,len);
  42.  
  43.   newsfile:=DosL.Open(SYSTEM.ADR(arg),DosD.readOnly);
  44.   IF newsfile=NIL THEN
  45.     Arts.Exit(10);
  46.   END;
  47.   size:=DosL.Seek(newsfile,0,DosD.end);
  48.   size:=DosL.Seek(newsfile,0,DosD.beginning);
  49.  
  50.   Heap.Allocate(buffer,size+16);
  51.   IF buffer=NIL THEN
  52.     Arts.Exit(10);
  53.   END;
  54.  
  55.   act:=DosL.Read(newsfile,buffer,size);
  56.   DosL.Close(newsfile);
  57.   newsfile:=NIL;
  58.  
  59.   FOR i:=0 TO size-1 DO
  60.     IF (                        (buffer^[i   ]="\n") AND
  61.          ((buffer^[i+ 1]="N") OR (buffer^[i+ 1]="n")) AND
  62.          ((buffer^[i+ 2]="E") OR (buffer^[i+ 2]="e")) AND
  63.          ((buffer^[i+ 3]="W") OR (buffer^[i+ 3]="w")) AND
  64.          ((buffer^[i+ 4]="S") OR (buffer^[i+ 4]="s")) AND
  65.          ((buffer^[i+ 5]="G") OR (buffer^[i+ 5]="g")) AND
  66.          ((buffer^[i+ 6]="R") OR (buffer^[i+ 6]="r")) AND
  67.          ((buffer^[i+ 7]="O") OR (buffer^[i+ 7]="o")) AND
  68.          ((buffer^[i+ 8]="U") OR (buffer^[i+ 8]="u")) AND
  69.          ((buffer^[i+ 9]="P") OR (buffer^[i+ 9]="p")) AND
  70.          ((buffer^[i+10]="S") OR (buffer^[i+10]="s")) AND
  71.          ((buffer^[i+11]=":") OR (buffer^[i+11]=":")) AND
  72.           (buffer^[i+12]=" ")
  73.        ) OR (
  74.                                                 (i=0) AND
  75.          ((buffer^[i   ]="N") OR (buffer^[i   ]="n")) AND
  76.          ((buffer^[i+ 1]="E") OR (buffer^[i+ 1]="e")) AND
  77.          ((buffer^[i+ 2]="W") OR (buffer^[i+ 2]="w")) AND
  78.          ((buffer^[i+ 3]="S") OR (buffer^[i+ 3]="s")) AND
  79.          ((buffer^[i+ 4]="G") OR (buffer^[i+ 4]="g")) AND
  80.          ((buffer^[i+ 5]="R") OR (buffer^[i+ 5]="r")) AND
  81.          ((buffer^[i+ 6]="O") OR (buffer^[i+ 6]="o")) AND
  82.          ((buffer^[i+ 7]="U") OR (buffer^[i+ 7]="u")) AND
  83.          ((buffer^[i+ 8]="P") OR (buffer^[i+ 8]="p")) AND
  84.          ((buffer^[i+ 9]="S") OR (buffer^[i+ 9]="s")) AND
  85.          ((buffer^[i+10]=":") OR (buffer^[i+10]=":")) AND
  86.           (buffer^[i+11]=" ")
  87.        ) THEN
  88.       j:=i+13;
  89.       IF i=0 THEN
  90.         j:=12;
  91.       END;
  92.       WHILE (buffer^[j]#",") AND (buffer^[j]#" ") AND (buffer^[j]#"\n") DO
  93.         act:=DosL.Write(DosL.Output(),SYSTEM.ADR(buffer^[j]),1);
  94.         INC(j);
  95.       END;
  96.       Arts.Exit(0);
  97.     END;
  98.   END;
  99. CLOSE
  100.   IF newsfile#NIL THEN
  101.     DosL.Close(newsfile);
  102.   END;
  103. END XSigGetGroup.mod
  104.